System and method for providing just-in-time resources based on context

ABSTRACT

Disclosed herein are systems, methods, and non-transitory computer-readable storage media for providing just-in-time resources based on context. A system configured to practice the method identifies a communication event associated with a user and a current context associated with the communication event and the user, and identifies a stored context that corresponds to the current context, wherein the stored context includes at least one resource. The system then retrieves the at least one resource and presents the at least one resource to the user. In another method for storing a current context, the system identifies a current communication context, identifies resources associated with the current communication context, indexes the current communication content and resources to enable searchability, and stores, as a stored context in a database, the current communication context and the resources associated with the current communication context.

RELATED APPLICATIONS

This application claims priority to U.S. Provisional Application 61/315,719, filed 19 Mar. 2010, the contents of which are herein incorporated by reference in their entirety.

BACKGROUND

1. Technical Field

The present disclosure relates to communication sessions and more specifically to providing resources just-in-time to a participant in a communication session based on context in the communication session.

2. Introduction

When an incoming or outgoing communication is initiated, such as an call or an instant message, the parties to the communication often must search for and access particular resources, such as documents, spreadsheets, contact information, To Do lists, other people, previously exchanged emails, and so forth. Searching for the correct resources takes time and can distract a person from speaking intelligently while tracking down the right document or information. Some call centers populate a call center agent's screen with a particular set of documents and/or information associated with an incoming caller, but the nature, type, and source of these documents are essentially the same for each caller and the general pattern of documents does not change.

Google desktop search and search functions in Microsoft exchange server, as well as some other enterprise search products can provide searching functions, but they do not offer the functions to automatically search for and retrieve related information based on the just-in-time context. Currently available solutions are limited to specific niche applications and are not generally applicable to the context of all incoming or outgoing communications for a user.

SUMMARY

Additional features and advantages of the disclosure will be set forth in the description which follows, and in part will be obvious from the description, or can be learned by practice of the herein disclosed principles. The features and advantages of the disclosure can be realized and obtained by means of the instruments and combinations particularly pointed out in the appended claims. These and other features of the disclosure will become more fully apparent from the following description and appended claims, or can be learned by the practice of the principles set forth herein.

Disclosed are systems, methods, and non-transitory computer-readable storage media for providing just-in-time resources based on context. A system practicing the method first identifies a communication event associated with a user and a current context associated with the communication event and the user, and identifies a stored context based on, for example, communication content, communication session metadata, and contact information, that corresponds to the current context, wherein the stored context includes at least one resource such as a document, an agenda, a web page, and a communication history. The system can then retrieve and present the at least one resource to the user. The communication event can be receiving from a caller a request for communication or the user starting a communication session.

In another embodiment, the system stores a current context for later retrieval by first identifying a current communication context and resources associated with the current communication context. The system can then index the current communication content and resources to enable searchability, and store, as a stored context in a database, the current communication context and the resources associated with the current communication context. The system can optionally identify metadata associated with the current communication context, and store the metadata as part of the stored context in the database. The system can also track user interactions associated with the current communication context and update the stored context based on the user interactions. The system can further assist the user by identifying other resources, not associated with the current communication context, that are potentially relevant to the current communication context, ranking the other resources by potential relevance to yield ranked other resources, and storing references to at least part of the ranked other resources as part of the stored context in the database so that the user can then later easily retrieve these potentially relevant other resources based on a current communications context.

BRIEF DESCRIPTION OF THE DRAWINGS

In order to describe the manner in which the above-recited and other advantages and features of the disclosure can be obtained, a more particular description of the principles briefly described above will be rendered by reference to specific embodiments thereof which are illustrated in the appended drawings. Understanding that these drawings depict only exemplary embodiments of the disclosure and are not therefore to be considered to be limiting of its scope, the principles herein are described and explained with additional specificity and detail through the use of the accompanying drawings in which:

FIG. 1 illustrates an example system embodiment;

FIG. 2 illustrates an exemplary user interface for an incoming call;

FIG. 3 illustrates an exemplary user interface for an established call;

FIG. 4 illustrates an exemplary enhanced user interface for an incoming call;

FIG. 5 illustrates an exemplary infrastructure configuration for providing just-in-time resources based on a communication context;

FIG. 6 illustrates a first example method embodiment;

FIG. 7 illustrates a second example method embodiment; and

FIG. 8 illustrates a third example method embodiment.

DETAILED DESCRIPTION

Various embodiments of the disclosure are discussed in detail below. While specific implementations are discussed, it should be understood that this is done for illustration purposes only. A person skilled in the relevant art will recognize that other components and configurations may be used without parting from the spirit and scope of the disclosure.

The present disclosure addresses the need in the art for retrieving resources based on context. A system, method and non-transitory computer-readable media are disclosed which retrieve and store resources on a just-in-time basis based on a current communication context. A brief introductory description of a basic general purpose system or computing device in FIG. 1 which can be employed to practice the concepts is disclosed herein. A more detailed description of the various exemplary graphical interfaces, system infrastructure, and methods will then follow. Multiple variations shall be discussed herein as the various embodiments are set forth. The disclosure now turns to FIG. 1.

With reference to FIG. 1, an exemplary system 100 includes a general-purpose computing device 100, including a processing unit (CPU or processor) 120 and a system bus 110 that couples various system components including the system memory 130 such as read only memory (ROM) 140 and random access memory (RAM) 150 to the processor 120. The system 100 can include a cache of high speed memory connected directly with, in close proximity to, or integrated as part of the processor 120. The system 100 copies data from the memory 130 and/or the storage device 160 to the cache for quick access by the processor 120. In this way, the cache provides a performance boost that avoids processor 120 delays while waiting for data. These and other modules can control or be configured to control the processor 120 to perform various actions. Other system memory 130 may be available for use as well. The memory 130 can include multiple different types of memory with different performance characteristics. It can be appreciated that the disclosure may operate on a computing device 100 with more than one processor 120 or on a group or cluster of computing devices networked together to provide greater processing capability. The processor 120 can include any general purpose processor and a hardware module or software module, such as module 1 162, module 2 164, and module 3 166 stored in storage device 160, configured to control the processor 120 as well as a special-purpose processor where software instructions are incorporated into the actual processor design. The processor 120 may essentially be a completely self-contained computing system, containing multiple cores or processors, a bus, memory controller, cache, etc. A multi-core processor may be symmetric or asymmetric.

The system bus 110 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. A basic input/output (BIOS) stored in ROM 140 or the like, may provide the basic routine that helps to transfer information between elements within the computing device 100, such as during start-up. The computing device 100 further includes storage devices 160 such as a hard disk drive, a magnetic disk drive, an optical disk drive, tape drive or the like. The storage device 160 can include software modules 162, 164, 166 for controlling the processor 120. Other hardware or software modules are contemplated. The storage device 160 is connected to the system bus 110 by a drive interface. The drives and the associated computer readable storage media provide nonvolatile storage of computer readable instructions, data structures, program modules and other data for the computing device 100. In one aspect, a hardware module that performs a particular function includes the software component stored in a non-transitory computer-readable medium in connection with the necessary hardware components, such as the processor 120, bus 110, display 170, and so forth, to carry out the function. The basic components are known to those of skill in the art and appropriate variations are contemplated depending on the type of device, such as whether the device 100 is a small, handheld computing device, a desktop computer, or a computer server.

Although the exemplary embodiment described herein employs the hard disk 160, it should be appreciated by those skilled in the art that other types of computer readable media which can store data that are accessible by a computer, such as magnetic cassettes, flash memory cards, digital versatile disks, cartridges, random access memories (RAMs) 150, read only memory (ROM) 140, a cable or wireless signal containing a bit stream and the like, may also be used in the exemplary operating environment. Non-transitory computer-readable storage media expressly exclude media such as energy, carrier signals, electromagnetic waves, and signals per se.

To enable user interaction with the computing device 100, an input device 190 represents any number of input mechanisms, such as a microphone for speech, a touch-sensitive screen for gesture or graphical input, keyboard, mouse, motion input, speech and so forth. An output device 170 can also be one or more of a number of output mechanisms known to those of skill in the art. In some instances, multimodal systems enable a user to provide multiple types of input to communicate with the computing device 100. The communications interface 180 generally governs and manages the user input and system output. There is no restriction on operating on any particular hardware arrangement and therefore the basic features here may easily be substituted for improved hardware or firmware arrangements as they are developed.

For clarity of explanation, the illustrative system embodiment is presented as including individual functional blocks including functional blocks labeled as a “processor” or processor 120. The functions these blocks represent may be provided through the use of either shared or dedicated hardware, including, but not limited to, hardware capable of executing software and hardware, such as a processor 120, that is purpose-built to operate as an equivalent to software executing on a general purpose processor. For example the functions of one or more processors presented in FIG. 1 may be provided by a single shared processor or multiple processors. (Use of the term “processor” should not be construed to refer exclusively to hardware capable of executing software.) Illustrative embodiments may include microprocessor and/or digital signal processor (DSP) hardware, read-only memory (ROM) 140 for storing software performing the operations discussed below, and random access memory (RAM) 150 for storing results. Very large scale integration (VLSI) hardware embodiments, as well as custom VLSI circuitry in combination with a general purpose DSP circuit, may also be provided.

The logical operations of the various embodiments are implemented as: (1) a sequence of computer implemented steps, operations, or procedures running on a programmable circuit within a general use computer, (2) a sequence of computer implemented steps, operations, or procedures running on a specific-use programmable circuit; and/or (3) interconnected machine modules or program engines within the programmable circuits. The system 100 shown in FIG. 1 can practice all or part of the recited methods, can be a part of the recited systems, and/or can operate according to instructions in the recited non-transitory computer-readable storage media. Such logical operations can be implemented as modules configured to control the processor 120 to perform particular functions according to the programming of the module. For example, FIG. 1 illustrates three modules Mod1 162, Mod2 164 and Mod3 166 which are modules configured to control the processor 120. These modules may be stored on the storage device 160 and loaded into RAM 150 or memory 130 at runtime or may be stored as would be known in the art in other computer-readable memory locations.

Having disclosed some basic computing system components, the disclosure returns to a discussion of just-in-time resource retrieval based on a communication context. The approaches disclosed herein apply equally to outgoing and incoming communications. However, the example below is described in the just-in-time context of an incoming communication. Just-in-time context can be determined based on one or more of a caller, a recipient, a time of day, a scheduled event, a previous communication, document contents, address books, location, and so forth. In one illustrative example, a caller makes a telephone call to a recipient. The recipient's telephone or other communication device identifies the caller and examines the recipient's previous interactions with the caller. For instance, the last time the caller and the recipient spoke, they discussed updating a spreadsheet. The system can either open the discussed spreadsheet automatically when the caller calls, present a link to the spreadsheet to the user, or the system can provide a prompt to the recipient asking if he or she wants to open the spreadsheet. In another aspect, the system can instruct multiple different devices to display potentially relevant documents and information, such as a desktop computer, desktop IP telephone with a display, a cellular phone, or any other device in the recipient's work sphere. Similarly, if the caller has a particular document open on his desktop computer, the system can open a copy of that document for the recipient.

If the caller and recipient had previously discussed asking their supervisor a question, the system can prompt the caller and/or recipient if they want to conference in their supervisor as well as providing an indication of their supervisor's availability based on the supervisor's presence information. The system can scan emails between the caller and recipient for key words and documents that were modified in the past week, for example, that relate to that key word. Thus, the context of the last telephone call between the caller and recipient can be updated by intervening communications via email, IM, or other communication modalities. The system can automatically determine and provide resources related to the just-in-time context of the communication. The system can also annotate those documents by presenting such information as “this document was modified this morning at 9:30 am”.

One advantage of such a communication system is that the system can identify and automatically retrieve or suggest relevant documents and resources in a just-in-time context for a communication instead of a person manually deciding which documents and resources are important and then searching for those documents while simultaneously attempting to communicate. This approach can enhance user efficiency by saving users from remembering which resources relate to a particular communication event, searching for those resources, and opening and presenting those resources all while simultaneously communicating via phone or IM, for example.

FIG. 2 illustrates an exemplary user interface 200 for an incoming call. The interface 200 includes a popup window 202 announcing the caller, Bob Katz. The user can click on an accept button 204 or a reject button 206. While this example illustrates an incoming call, the communication can be a telephone call, voice over IP call, instant message, text message, Google Wave communication, email, video conference, or other communication modality. The user can click accept 204 or provide some other input, such as picking up a telephone receiver, to accept the incoming call.

FIG. 3 illustrates an exemplary user interface 200 for an established call. In this example, the user has accepted the call and the system has established the call. The system displays a window 302 including resources 304, 306 associated with the context of the call. In this example, the system was monitoring the previous communication between the user and Bob Katz. In the previous communication session, the user and Bob Katz were reviewing a first document 304 and mentioned that they should review a second document 306 in the next call. Based on the context of the previous communication, the system opens the first document 304 and the second document 306 automatically for the user and/or Bob Katz. In one aspect, either party can share with other parties the documents that the system opens based on the communication context. For example, if only the user's communication system can retrieve resources just-in-time based on context, and Bob's system can not, the user can share resources with Bob. The user's system establishes a communication channel with Bob's system to push that information to Bob's screen. If Bob's system is unavailable or is not sufficiently sophisticated to communicate on that level, the user's system can send the resources or links to the resources via traditional methods, such as email or instant message.

FIG. 4 illustrates an exemplary enhanced user interface for an incoming call. In this example, the system displays a popup window 402 announcing the incoming call. The popup window 402 can include an accept button and reject button as shown in FIG. 2. The popup window 402 can also include lists of resources, such as a list of resources opened in the last similar communication context 404 and a list of resources discussed in the last similar communication context 410. The user can the review and select which of the resources to open in this communication session. For example, the user can check 406 or uncheck 408 specific resources to open. Either immediately or after the user accepts the incoming call, the system opens the selected resources. The system can open the selected resources on the same communication device on which the user is communicating or on a separate device, such as a desktop computer or computing tablet.

In one variation, the system provides a separate popup or notification suggesting resources just-in-time for the communication context. The user can interact with the popup or notification to accept the suggestion and open the document, reject the popup or notification, or ignore the popup or notification. If the user accepts the suggestion, the system can increase the ranking or importance of the accepted resource. If the user rejects the suggestion, the system can decrease the ranking or importance of the rejected resource. If the user ignores the suggestion, the system can either decrease or leave unchanged the ranking or importance, for example.

FIG. 5 illustrates an exemplary infrastructure 500 configuration for providing just-in-time resources based on a communication context. In this infrastructure 500, a first user 502 communicates via a first device 504 with a second user 506 and a second device 508 via a communication network 510. In one implementation, a communication context server 512 resides in or across the network 510, but the communication context server 512 can reside entirely or partially in other locations as well, such as within the first device 504 or the second device 508. The communication context server 512 can monitor, store, and search communication context for communication sessions between users. For example, when the first user 502 and the second user 506 talk on the telephone, the communication context server 512 monitors that conversation and/or its context. The server generates a context profile for that communication and stores resources and/or links to resources in a resources database 514. The communication context server 512 can also track resources stored in each user's respective local resources database 516, 518. Later, when the same users (or a closely related subset of the users in cases of more than two user communications) communicate, the communication context server 512 identifies the context, retrieves resources from the resources database(s) 514, 516, 518 and presents the resources to the appropriate users, either on their respective devices 504, 508 or other devices. In this way, when users who were previously discussing Document Z call each other again, the communication context server 512 automatically retrieves Document Z and/or any other resources previously discussed or used for the users. This can save time for the users and prevent the users from remembering which documents were needed and then looking for the documents.

In one aspect, each user 502, 506 has a separate, personalized context for the same communication session. In this way, when the first user 502 and second user 506 call each other, the communication context server 512 retrieves a first set of resources for the first user 502 and a second set of resources for the second user 506.

Having disclosed some basic system components, the disclosure now turns to the three exemplary method embodiments shown in FIGS. 6, 7, and 8. For the sake of clarity, the methods are discussed in terms of an exemplary system 100 as shown in FIG. 1 configured to practice the method.

FIG. 6 illustrates an example method embodiment for providing just-in-time resources based on context. The system 100 identifies a communication event associated with a user and a current context associated with the communication event and the user (602). The system can operate based on the user's communication device, a network-based device, and/or on a caller's device. The communication event can be, for example, another party attempting to contact the user via any modality. The event can be a non-communications event, such as a calendar event or a specific sequence of actions on a smartphone and/or personal computer. In one illustrative example, the communication event is when the user receives from a caller a request for communication and the user accepts the request, thereby starting a communication session with the caller.

The system 100 identifies a stored context that corresponds to the current context, wherein the stored context includes at least one resource (604). The context can include information such as communication content, a communication history, communication session metadata, contact information. The resource can be a document, an agenda, a web page, and/or a communication history. The system 100 retrieves the at least one resource (606) and presents the at least one resource to the user (608). In one aspect, the system presents the resource by automatically opening a document for the user. The system can present resources on a communications device, such as a smartphone, or on a separate device. If the system presents resources on the communications device, the system can present the resources as part of a graphical user interface for managing a communication session. As another example, if the user is accepting a video call on a smartphone, the system can present to the user resources associated with the communication context of the video call on a laptop computer and/or on the smartphone. The system can present links to access the resources, such as world wide web, network, or other addresses.

In one variation, the system further tracks user interactions associated with the communication event and updates the stored context based on the user interactions. In this way, the system can adapt and update the stored context to match the user's changing needs. For example, if an initial conversation between two users centered around Document X, but through the course of communication, the users shift the conversation focus to Document Y, the system can update the context to assign a higher priority, prominence, or importance to Document Y. The system can eventually remove Document X entirely from the resources associated with the communication context if the users do not mention or refer to Document X or information stored in Document X after a threshold amount of time. The system can present a list of highest ranked resources that are most likely to be needed to the user or users in a communication session, but the users can then drill down to browse and retrieve other documents that may not be as highly ranked but are still relevant to the communication session.

In a related variation, the system can identify other resources, not part of the stored context, that are potentially relevant to at least one of the current context and the stored context, rank the other resources by potential relevance to yield ranked other resources, and present at least part of the ranked other resources to the user. For example, if the system has access to multiple users' communication session histories, contexts, and resources, the system can deduce, based on others' contexts and resources, that if two users are speaking about Documents A, B, and C, they are likely to be interested in Documents D and E as well. The system can suggest Documents D and E to one or both users based, for example, on document permissions, user role, and so forth.

FIG. 7 illustrates an example method embodiment for storing a current context, including resources associated with the current context, for later retrieval. The system 100 identifies a current communication context (702), including, for example, a user, a communication modality, a time, and/or a date. The system 100 identifies resources associated with the current communication context (704). The resources can include a document, an agenda, a web page, and/or a communication history.

The system 100 indexes the current communication content and resources to enable searchability (706). For example, the system can perform optical character recognition on images of scanned documents, the system can add metadata or tags to the communication content and/or resources, the system can perform speech recognition on voice conversations, and so forth. Then the system 100 stores, as a stored context in a database, the current communication context and the resources associated with the current communication context (708). The system can further identify metadata associated with the current communication context, and store the metadata as part of the stored context in the database. When the communication session involves multiple parties, the system can assign weights to metadata based on which user is the source of the metadata. For example, the system can assign a higher weight to metadata originating from a supervisor that to metadata originating from a seasonal worker.

In one aspect, the system also tracks user interactions associated with the current communication context and updates the stored context based on the user interactions. In this way, the system adapts and changes to match the evolution of the communications over multiple individual communication sessions. Many elements that influence the communication context can change over time, such as time of year, user organizational role, volume of work, etc. The system can flexibly update the context to match the fluid nature of communications and better retrieve context and resources just-in-time.

FIG. 8 illustrates an example method embodiment for storing resources associated with a current context, and later retrieving the stored resources. In this embodiment, the system 100 receives, via a communications interface, a notification of an incoming request for communication directed to a user (802) and identifies a current communication context for the incoming request (804).

The system 100 retrieves, based on a similarity threshold to the current communication context, a stored communication context and a resource associated with the stored communication context (806). The context can include, for example, communication content, communication session metadata, and contact information. The resources can include a document, an agenda, a web page, and a communication history. The system 100 presents a modified request for communication including the incoming request, at least part of the stored communication context, and at least part of the resource (808). The system can receive an indication from the user accepting the modified request and establish a communication session based on the incoming request. The system can also transmit the resource to a sender of the incoming request for communication, so that both users can view and/or manipulate the same resource as part of the communication session.

Embodiments within the scope of the present disclosure may also include tangible and/or non-transitory computer-readable storage media for carrying or having computer-executable instructions or data structures stored thereon. Such non-transitory computer-readable storage media can be any available media that can be accessed by a general purpose or special purpose computer, including the functional design of any special purpose processor as discussed above. By way of example, and not limitation, such non-transitory computer-readable media can include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to carry or store desired program code means in the form of computer-executable instructions, data structures, or processor chip design. When information is transferred or provided over a network or another communications connection (either hardwired, wireless, or combination thereof) to a computer, the computer properly views the connection as a computer-readable medium. Thus, any such connection is properly termed a computer-readable medium. Combinations of the above should also be included within the scope of the computer-readable media.

Computer-executable instructions include, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions. Computer-executable instructions also include program modules that are executed by computers in stand-alone or network environments. Generally, program modules include routines, programs, components, data structures, objects, and the functions inherent in the design of special-purpose processors, etc. that perform particular tasks or implement particular abstract data types. Computer-executable instructions, associated data structures, and program modules represent examples of the program code means for executing steps of the methods disclosed herein. The particular sequence of such executable instructions or associated data structures represents examples of corresponding acts for implementing the functions described in such steps.

Those of skill in the art will appreciate that other embodiments of the disclosure may be practiced in network computing environments with many types of computer system configurations, including personal computers, hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, and the like. Embodiments may also be practiced in distributed computing environments where tasks are performed by local and remote processing devices that are linked (either by hardwired links, wireless links, or by a combination thereof) through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.

The various embodiments described above are provided by way of illustration only and should not be construed to limit the scope of the disclosure. For example, the principles herein can be implemented as part of a mobile communication device, such as a smartphone, as part of a dedicated desktop phone, or as part of a personal computer. The communication context server discussed above can be implemented as a separate hardware device and/or as software executing on traditional communication infrastructure nodes. Those skilled in the art will readily recognize various modifications and changes that may be made to the principles described herein without following the example embodiments and applications illustrated and described herein, and without departing from the spirit and scope of the disclosure. 

1. A method of providing just-in-time resources based on context, the method comprising: identifying a communication event associated with a user and a current context associated with the communication event and the user; identifying a stored context that corresponds to the current context, wherein the stored context comprises at least one resource; retrieving the at least one resource; and presenting the at least one resource to the user.
 2. The method of claim 1, wherein the communication event is at least one of receiving from a caller a request for communication and the user starting a communication session.
 3. The method of claim 1, wherein the at least one resource comprises at least one of a document, an agenda, a web page, and a communication history.
 4. The method of claim 1, wherein the stored context further comprises at least one of communication content, communication session metadata, and contact information.
 5. The method of claim 1, further comprising: tracking user interactions associated with the communication event; and updating the stored context based on the user interactions.
 6. The method of claim 1, wherein presenting the at least one resource further comprises presenting a link to access the at least one resource.
 7. The method of claim 1, further comprising: identifying other resources, not part of the stored context, that are potentially relevant to at least one of the current context and the stored context; ranking the other resources by potential relevance to yield ranked other resources; and presenting at least part of the ranked other resources to the user.
 8. The method of claim 1, further comprising presenting the at least one resource to the user as part of a graphical user interface for managing a communication session.
 9. A non-transitory computer-readable storage medium storing instructions which, when executed by a computing device, cause the computing device to store a current context for later retrieval, the instructions comprising: identifying a current communication context; identifying resources associated with the current communication context; indexing the current communication content and resources to enable searchability; and storing, as a stored context in a database, the current communication context and the resources associated with the current communication context.
 10. The non-transitory computer-readable storage medium of claim 9, wherein the current communication context comprises at least one of a user, a communication modality, a time, and a date.
 11. The non-transitory computer-readable storage medium of claim 9, wherein the resources comprise at least one of a document, an agenda, a web page, and a communication history.
 12. The non-transitory computer-readable storage medium of claim 9, further comprising: identifying metadata associated with the current communication context; and storing the metadata as part of the stored context in the database.
 13. The non-transitory computer-readable storage medium of claim 9, further comprising: tracking user interactions associated with the current communication context; and updating the stored context based on the user interactions.
 14. The non-transitory computer-readable storage medium of claim 9, further comprising: retrieving the stored context from the database; and presenting at least part of the resources to a user.
 15. The non-transitory computer-readable storage medium of claim 9, further comprising: identifying other resources, not associated with the current communication context, that are potentially relevant to the current communication context; ranking the other resources by potential relevance to yield ranked other resources; and storing references to at least part of the ranked other resources as part of the stored context in the database.
 16. A system for communicating based on a stored context, the system comprising: a processor; a communications interface; a first module configured to control the processor to receive, via the communications interface, a notification of an incoming request for communication directed to a user; a second module configured to control the processor to identify a current communication context for the incoming request; a third module configured to control the processor to retrieve, based on a similarity threshold to the current communication context, a stored communication context and a resource associated with the stored communication context; and a fourth module configured to control the processor to present a modified request for communication comprising the incoming request, at least part of the stored communication context, and at least part of the resource.
 17. The system of claim 16, further comprising: a fifth module configured to control the processor to receive an indication from the user accepting the modified request; and a sixth module configured to control the processor to establish a communication session based on the incoming request.
 18. The system of claim 17, further comprising: a seventh module configured to control the processor to transmit the at least part of the resource to a sender of the incoming request for communication.
 19. The system of claim 16, wherein the stored communication context further comprises at least one of communication content, communication session metadata, and contact information, and wherein the resource comprises at least one of a document, an agenda, a web page, and a communication history. 